package com.cf.wal.service;

import java.util.List;

/**
 * boot-awm-LogEngine
 *
 * @author <a href="2428922347@qq.com">Zhu mingming</a>
 * @info
 * @since 2018/7/4 下午 05:19
 */
public interface WalEngine {

    /**
     * 回滚日志,
     * (1)回滚执行的操作一定能执行
     * (2)操作幂等
     *
     * @param action
     * @return
     */
    List<Action> undo(CommandAction action);

    /**
     * 重做日志
     *
     * @param action
     * @return
     */
    List<Action> redo(CommandAction action);

    /**
     * 执行操作
     *
     * @param actions
     */
    void exec(List<Action> actions);

    /**
     * 获取支持的类型
     *
     * @return
     */
    String supportType();
}
